<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //作用域 变量和和函数的作用范围

      //三种作用域 1、全局作用域 2、函数作用域(局部作用域) 函数包裹的范围 3.块级作用域（ES6）
      // 全局作用域 在所有位置都可以获取到变量或者函数 直接定义的函数和变量
      //全局变量定义过多 变量污染
      //   var a = 10
      //   function fn() {
      //     console.log('fn')
      //   }
      //   var a = 10
      //   function fn(b) {
      //     // console.log(b)
      //     console.log(a)
      //   }
      //   fn(a)
      //二、局部作用域（函数作用域）
    //   function fn() {
    //     // a定义在函数内部 变量a的作用域在函数内部
    //     var a = 10
    //     console.log(a)
    //   }
    //   fn()
    //   console.log(a);
    // var a = 10;
    // var a = 20
    // console.log(a);
    //   function fn(){
    //     var a = 10
    //     console.log(a)
    //   }
    //   function fn2(){
    //     var a=20
    //     console.log(a);
    //   }
    //   fn()
    //   fn2()
    //自执行函数  定义一个函数立即执行
    (function(){ //自执行函数   区分作用域  
        console.log(111);
        var a=10;
        var b = 20;
        var c =a+b;
        console.log(c);
    });
    //每个自执行函数调用后都需要加个分号；
    // (function(){ //自执行函数   区分作用域
    //     console.log(222);
    //     var a=1;
    //     var b = 2;
    //     var c =a+b;
    //     console.log(c);
    // })()
/* 
1、全局作用域  script 整个内容
2、函数局部作用域 只会在函数内部起作用
3、自执行函数 区分独立作用域，防止变量污染
*/
    </script>
  </body>
</html>
